package com.gitee.slowcreator.http.retry;

import com.gitee.slowcreator.http.annotation.Retry;
import com.gitee.slowcreator.http.params.RetryHandleResult;

/**
 * 重试执行器
 *
 * @param <T> 返回值类型
 * @author zxw
 * @date 2023/1/8 上午8:36
 */
@FunctionalInterface
public interface RetryExecutor<T> {

    /**
     * 返回false和抛出指定异常重试
     * 见{@link Retry}
     *
     * @param data 请求参数
     * @return 是否需要重试 true 需要重试 false 不需要重试
     */
    RetryHandleResult<T> handle(Object[] data);
}
